05_BDV/00 -- BDV.md

Capítulo 5 — Base de Datos Vectorial (BDV)

El cierre del capítulo 3 ya anticipó la decisión: los embeddings dejarán de generarse a partir del esquema de la base de datos y pasarán a generarse a partir de las descripciones de los recursos. El capítulo 4, por su parte, ha establecido el lenguaje arquitectónico necesario para implementarlo — bounded contexts, eventos de dominio, proyecciones event-driven. Este capítulo es donde ambas piezas se juntan.

El objetivo concreto es construir dwall-module-embeddings: un nuevo bounded context dentro del backend Java que escucha los eventos de los recursos de DWall, genera el vector correspondiente vía Gemini y lo persiste en PostgreSQL con pgvector. El módulo sustituye al sistema FAISS + Python del prototipo, pero el cambio relevante no es de infraestructura sino de enfoque: la búsqueda semántica deja de operar sobre la estructura técnica de la base de datos y pasa a operar sobre el significado de negocio de cada recurso.

Como en cualquier diseño no trivial, el camino no fue lineal. Algunas decisiones se mantuvieron desde el inicio — el uso de pgvector frente a una base de datos vectorial dedicada, o la integración como un módulo Maven más del backend. Otras evolucionaron a medida que el módulo crecía: el reparto en ocho tablas por tipo de entidad en lugar de una tabla central, la disyuntiva entre escuchar eventos nativos del recurso o eventos de descripción, la deduplicación de llamadas a Gemini, o la unificación —y posterior reversión— de un único EmbeddingService genérico. Esas tensiones se irán explicando en su sitio.

Estructura del capítulo

SecciónContenido
01 -- Qué son los embeddingsConcepto: vector, espacio semántico, búsqueda por significado
02 -- Análisis del sistema actualEl prototipo FAISS y por qué no escala
03 -- Diseño del esquema en pgvectorTablas por entidad, vistas de contexto, ACL en SQL
04 -- Embeddings - Integridad y asincroniedadTriggers, generators, deduplicación, doble llamada
05 -- Embeddings - Capa de aplicaciónListener, generator, text builder, router descripciones
06 -- Búsqueda semánticaEndpoint, Criteria, taskType, filtro semántico
07 -- Testing y evaluación de rendimientoTrade-offs reales del diseño
08-- Cierre del capítuloBalance y puente hacia SPR